Monise Terra Cerezini

Exerccios Aula 3


#Distncia entre cidades


Abaixo as distncias por estradas entre quatro cidades da Europa, em quilmetros: 

Atenas a Madri: 3949
Atenas a Paris: 3000
Atenas a Estocolmo: 3927
Madri a Paris: 1273
Madri a Estocolomo: 3188
Paris a Estocolmo: 1827


1. Construa uma matriz de distncias com esses valores.

> distancia=read.table("distancia.csv", header=T, sep=";", as.is=T)
> distancia
           X Atenas Paris Madri Estocolmo
1     Atenas      0  3000  3949      3927
2     Paris    3000     0  1273      1827
3      Madri   3949  1273     0      3188
4 Estocolmo    3927  1827  3188         0



2. Compare sua matriz com o objeto eurodist, disponvel no pacote datasets.

dist.euro = as.matrix(eurodist)
dist.euro = as.data.frame(dist.euro)
names(dist.euro)

dist.sel=distancia.euro[c(1,18,14,20),c(1,18,14,20)]
class(dist.sel)
dist.sel
distancia
  

#Criao de um data frame

1. Crie um data frame com esses dados, na qual cada hamster seja uma linha, e as colunas sejam as variveis cor, dieta e variao do peso.

dieta<-rep(c("A","B","C"),times=2,each=3)
dieta

cor<-rep(c("Claro","Escuro"),each=9)
cor

var.peso=c(0.1,1.1,3.7,5.7,-1.2,-1.5,3.0,-0.4,0.6,1.5,-0.1,2.0,0.6,-3.0,-0.3,-0.2,0.3,1.5)
var.peso

hamster=data.frame(dieta,cor,var.peso)
hamster
save.image()

2. Qual a media por dieta e por fentipo?

#Mdia por dieta
media.a=mean(hamster$var.peso[hamster$dieta=="A"])
media.a

media.b=mean(hamster$var.peso[hamster$dieta=="B"])
media.b

media.c=mean(hamster$var.peso[hamster$dieta=="C"])
media.c

#Mdia por fentipo
media.claro=mean(hamster$var.peso[hamster$cor=="Claro"])
media.claro

media.escuro=mean(hamster$var.pes[hamster$cor=="Escuro"])
media.escuro


#Criando uma Matriz

1. Crie um objeto da classe matriz com 5 colunas e 3 linhas contendo uma amostra de uma 
distribuio normal de mdia 10 e varincia 3,6. 
 
> a<-rnorm(15,mean=10,sd=3.6)
> a
 [1]  4.851390 14.890673  7.471718  1.885367  8.879391 10.503703  5.479555
 [8]  6.176761  9.587843 15.990677  3.840889 13.970779 13.593656  9.292373
[15]  8.487177

> matriz<-matrix(a,nrow=3,ncol=5)
> matriz
          [,1]      [,2]     [,3]      [,4]      [,5]
[1,]  4.851390  1.885367 5.479555 15.990677 13.593656
[2,] 14.890673  8.879391 6.176761  3.840889  9.292373
[3,]  7.471718 10.503703 9.587843 13.970779  8.487177


2. Mude os nomes das linhas para L1 a L3 e das colunas para C1 a C5. 
Dica: A funo paste pode poupar trabalho.

> colnames(matriz)<-paste("C",1:5)
> matriz
           C 1       C 2      C 3       C 4       C 5
[1,]  4.851390  1.885367 5.479555 15.990677 13.593656
[2,] 14.890673  8.879391 6.176761  3.840889  9.292373
[3,]  7.471718 10.503703 9.587843 13.970779  8.487177

> rownames(matriz)<-paste("L",1:3)
> matriz
          C 1       C 2      C 3       C 4       C 5
L 1  4.851390  1.885367 5.479555 15.990677 13.593656
L 2 14.890673  8.879391 6.176761  3.840889  9.292373
L 3  7.471718 10.503703 9.587843 13.970779  8.487177


3. Calcule a mdia e a varincia por colunas e depois por linhas. Guarde os resultados em 
um dataframe diferenciando varincia de mdia em dois vetores.

media.linha=apply(matriz,1,mean)
> media.linha
      L 1       L 2       L 3 
 8.360129  8.616017 10.004244 

> media.coluna=apply(matriz,2,mean)
> media.coluna
      C 1       C 2       C 3       C 4       C 5 
 9.071260  7.089487  7.081386 11.267448 10.457735 

> var.linha=apply(matriz,1,var)
> var.linha
      L 1       L 2       L 3 
37.036643 17.162488  6.217857 

> var.coluna=apply(matriz,2,var)
> var.coluna
      C 1       C 2       C 3       C 4       C 5 
27.115703 20.971749  4.833267 42.385336  7.537583 

> resultado.linha=data.frame(media.linha,var.linha)
> resultado.linha
    media.linha var.linha
L 1    8.360129 37.036643
L 2    8.616017 17.162488
L 3   10.004244  6.217857

> resultado.coluna=data.frame(media.coluna,var.coluna)
> resultado.coluna
    media.coluna var.coluna
C 1     9.071260  27.115703
C 2     7.089487  20.971749
C 3     7.081386   4.833267
C 4    11.267448  42.385336
C 5    10.457735   7.537583




#Lendo e Salvando seus dados

Leia um arquivo de dados de sua autoria e faa um sumrio das variveis independentes. 
Caso no tenha dados, ter que ir a campo, ou utilize alguns dos dados da rea Arquivos de dados da nossa pgina . 

itirapina<-read.table("itirapina.csv",header=T,sep=",")
itirapina

str(itirapina)
head(itirapina)
dim(itirapina)
class(itirapina)


1. Selecionando um estado de atributo de um vetor fator e salve em um objeto 

Astereae=itirapina[itirapina$tribo.planta=="Astereae",]
Astereae


2. Selecionando trs colunas de dados

Astereae.3colunas=Astereae[,1:3]
Astereae.3colunas


3. Salvando em um arquivo.txt

write.table(Astereae.3colunas, file = "Astereae.3colunas.txt", append = FALSE, quote = TRUE, sep = " ,",dec = ".", row.names = FALSE, col.names = TRUE, qmethod = c("escape", "double"))
write.table


#Classes de Objetos

1. Quais so as classes desses dois objetos?

> class(iris)
[1] "data.frame"

> class(iris3)
[1] "array"


2. Calcule a mdia de cada uma das quatro medidas por espcie, dos dois objetos. 
DICA: as fues da famlia apply iro te ajudar.


> mean(iris$Sepal.Length)
[1] 5.843333

> mean(iris$Sepal.Width)
[1] 3.057333

> mean(iris$Petal.Length)
[1] 3.758

> mean(iris$Petal.Width)
[1] 1.199333

> apply(iris3,c(2,3),mean)
         Setosa Versicolor Virginica
Sepal L.  5.006      5.936     6.588
Sepal W.  3.428      2.770     2.974
Petal L.  1.462      4.260     5.552
Petal W.  0.246      1.326     2.026


3. Os nomes das variaveis esto em ingls. Mude-os para portugus no objeto iris. 
DICA: Como tudo mais no R, os resultados da funo names podem ser armazenados em um objeto.

> names(iris)=c("Comp. sepalas","Larg. sepalas","Comp. petalas","Larg. petalas","Especies")

> names(iris)
[1] "Comp. sepalas" "Larg. sepalas" "Comp. petalas" "Larg. petalas"
[5] "Especies"   



#Acrescentando Dados de Sntese

1. Crie um objeto com os dados do arquivo-texto esaligna.csv.

esaligna=read.table("esaligna.csv", header=T, sep=",", as.is=T, row.names=NULL)


2. Verifique o contedo do objeto resultante, com a funo summary.

summary(esaligna)



3. Acrescente uma nova coluna ao data frame resultante, com a soma das biomassas de folhas e do tronco de cada rvore.

esaligna$Biomass.total=esaligna$tronco+esaligna$folha
summary(esaligna)


4. Acrescente outra coluna, com o valor da rea basal de cada rvore.

raio=esaligna$dap/2
area.basal=pi*raio^2
area.basal
esaligna$area.basal=area.basal
head(esaligna)

5. Calcule a rea basal total por talho e salve em um objeto

area.basal.talhao = xtabs(Area.Basal~talhao, data=esaligna)
area.basal.talhao

6. Calcule a mdia por talho

area.basal.media=tapply(esaligna$area.basal,esaligna$talhao,mean, simplify = TRUE)
area.basal.media


7. Selecione apenas os dados relativos  rvores com mais de 10 cm de dimetro

Arvores.dap10=esaligna[esaligna$dap>=10,]
Arvores.dap10


8. Salve em um arquivo txt, separado por tabulao.

write.table(Arvores.dap10,"Arvores_DAP10cm.txt", append = FALSE, quote = TRUE, sep = ",",eol = "\n", na = "NA", dec = ".", row.names = FALSE, col.names = TRUE, qmethod = c("escape", "double"))






